package com.zenithmind.gateway.security;

/**
 * 安全策略处理器接口
 * 遵循接口隔离原则：定义安全策略处理的核心方法
 * 遵循依赖倒置原则：高层模块依赖抽象而非具体实现
 */
public interface SecurityPolicyHandler {
    
    /**
     * 判断当前请求路径是否需要跳过权限校验
     *
     * @param path 当前请求的路径
     * @return 如果当前路径是公开的（不需要认证），则返回true；否则返回false
     */
    boolean shouldSkipAuth(String path);

    /**
     * 判断路径是否需要认证
     * @param path 请求路径
     * @return true表示需要认证，false表示不需要认证
     */
    boolean needAuthentication(String path);

    /**
     * 添加公开访问路径
     * @param path 路径模式
     */
    void addPublicPath(String path);

    /**
     * 添加受保护路径
     * @param path 路径模式
     */
    void addProtectedPath(String path);

    /**
     * 移除公开访问路径
     * @param path 路径模式
     */
    void removePublicPath(String path);

    /**
     * 移除受保护路径
     * @param path 路径模式
     */
    void removeProtectedPath(String path);
    
    /**
     * 获取忽略URL列表
     * @return URL列表
     */
    java.util.List<String> getIgnoreUrlList();
}
